﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace instantget
{
    public partial class Regisztracio : Form
    {
        string hibak="";

        public Regisztracio()
        {
            InitializeComponent();
        }
        
        private void Regisztracio_Load(object sender, EventArgs e)
        {
            this.felhasznaloTableAdapter.Fill(this.instantgetDataSet.felhasznalo);
            this.varosTableAdapter.Fill(this.instantgetDataSet.varos);
            TooltipTargeting();
        }

        private void TooltipTargeting()
        {
            toolTip1.SetToolTip(txtnnev, "5 és 20 karakter között legyen a hossza!");
            toolTip1.SetToolTip(txtpw1, "6 és 16 karakter között legyen a hossza,\n csak az angol ABC betűi alkalmasak!");
            toolTip1.SetToolTip(txtpw2, "Kérem, adja meg mégegyszer a jelszavát!");
            toolTip1.SetToolTip(txtemail, "Érvényes e-mail címet adjon meg!");
            toolTip1.SetToolTip(txtirszam, "Csak 4 jegyű magyar irányitószámokat adjon meg!");
            toolTip1.SetToolTip(txttel, "Egybe írva adja meg a telefonszámát: pl.06201234567!");
        }

        private void btnReg_Click(object sender, EventArgs e)
        {
           if ( this.Validate()==false)
            {
                NewFelhasznalo();
             }
            else
            {
                MessageBox.Show("Valamely adat nem megfelelően lett bejegyezve, próbálja újra! \n" + hibak,"Regisztráció",MessageBoxButtons.OK);
                
            }
        }

        private void NewFelhasznalo()
        {
            instantgetDataSet.felhasznaloRow ujfelhasznalo = this.instantgetDataSet.felhasznalo.NewfelhasznaloRow();
                
            ujfelhasznalo.pw = txtpw1.Text.GetHashCode();
            ujfelhasznalo.nnev = txtnnev.Text;

            if (felhasznaloTableAdapter.GetDataByUser(ujfelhasznalo.pw,ujfelhasznalo.nnev).Rows.Count == 0)
            {
                ujfelhasznalo.knev = txtknev.Text;
                ujfelhasznalo.vnev = txtvnev.Text;
                if (txtemail.Text != "")
                {
                    ujfelhasznalo.email = txtemail.Text;
                }
                ujfelhasznalo.varos_id = (int)comboBox1.SelectedValue;
                ujfelhasznalo.irszam = txtirszam.Text;
                ujfelhasznalo.cim = txtcim.Text;
                if (txttel.Text != "")
                {
                    ujfelhasznalo.tel = txttel.Text;
                }
                this.instantgetDataSet.felhasznalo.Rows.Add(ujfelhasznalo);
                this.felhasznaloTableAdapter.Update(this.instantgetDataSet.felhasznalo);

                if(MessageBox.Show("A felhasználó létrehozása sikeresen megtörtént!","Regisztráció",MessageBoxButtons.OK)== DialogResult.OK)
                {
                    this.Close();
                }
            }
            else
            {
                MessageBox.Show("Már létezik a megadott felhasználó-jelszó páros!");
            }
        }

       
        private void btnReg_Validating(object sender, CancelEventArgs e)
        {
            UserTeszt(e);
            PwTeszt(e);
            VnevTeszt(e);
            KnevTeszt(e);
            EmailTeszt(e);
            IrszamTeszt(e);
            CimTeszt(e);
            TelTeszt(e);
        }

        private void UserTeszt(CancelEventArgs e)
        {
            Regex nevteszt = new Regex(@"^[0-9a-zA-ZáéíóőúűÁÉÍÓŐÚŰ/.]{5,20}$");
            if (nevteszt.IsMatch(txtnnev.Text))
            {
                e.Cancel = false;
            }
            else
            {
                hibak += "Hibás felhasználónév! \n";
                e.Cancel = true;
            }
        }

        private void PwTeszt(CancelEventArgs e)
        {
            if (txtpw1.Text.GetHashCode() == txtpw2.Text.GetHashCode())
            {
                Regex pwteszt = new Regex(@"^[a-zA-Z0-9]{6,16}$");
                if (pwteszt.IsMatch(txtpw1.Text))
                {
                    e.Cancel = false;
                }
                else
                {
                    hibak += "Hibás jelszó! \n";
                    e.Cancel = true;
                }
            }
            else
            {
                hibak += "A két megadott jelszó nem megegyező! \n";
                e.Cancel = true;
            }
        }

        private void VnevTeszt(CancelEventArgs e)
        {
            Regex vnevteszt = new Regex(@"^[A-ZÁÉÍÓŐÚŰ]{1}[a-záéíóőúű]{1,24}$");
            if (vnevteszt.IsMatch(txtvnev.Text))
            {
                e.Cancel = false;
            }
            else
            {
                hibak += "Hibás vezetéknév! \n";
                e.Cancel = true;
            }
        }

        private void KnevTeszt(CancelEventArgs e)
        {
            Regex knevteszt = new Regex(@"^[A-ZÁÉÍÓŐÚŰ]{1}[a-záéíóőúű]{3,24}$");
            if (knevteszt.IsMatch(txtknev.Text))
            {
                e.Cancel = false;
            }
            else
            {
                hibak += "Hibás keresztnév! \n";
                e.Cancel = true;
            }
        }

        private void EmailTeszt(CancelEventArgs e)
        {
            Regex emailteszt = new Regex(@"^\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$");
            if (emailteszt.IsMatch(txtemail.Text) || txtemail.Text == "")
            {
                e.Cancel = false;
            }
            else
            {
                hibak += "Hibás e-mail! \n";
                e.Cancel = true;
            }
        }

        private void IrszamTeszt(CancelEventArgs e)
        {
            Regex irszamteszt = new Regex(@"^[1-9]{1}[0-9]{3}$");
            if (irszamteszt.IsMatch(txtirszam.Text))
            {
                e.Cancel = false;
            }
            else
            {
                hibak += "Hibás irányitószám! \n";
                e.Cancel = true;
            }
        }

        private void CimTeszt(CancelEventArgs e)
        {
            if (txtcim.Text != "")
            {
                e.Cancel = false;
            }
            else
            {
                hibak += "A cím kitöltése kötelező! \n";
                e.Cancel = true;
            }
        }

        private void TelTeszt(CancelEventArgs e)
        {
            Regex telteszt = new Regex(@"^(06[0-9]{9})");
            if (telteszt.IsMatch(txttel.Text) || txttel.Text == "")
            {
                e.Cancel = false;
            }
            else
            {
                hibak += "Hibás telefonszám! \n";
                e.Cancel = true;
            }
        }
    }
}
